package org.jeecg.modules.system.util;

import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.ArrayList;
import java.util.List;

public class PageMerger {

    public static <T> IPage<T> mergePages(List<IPage<T>> pages) {
        if (pages == null || pages.isEmpty()) {
            return new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(); // 返回空分页
        }

        // 1. 合并所有 records
        List<T> mergedRecords = new ArrayList<>();
        long total = 0;

        for (IPage<T> page : pages) {
            if (page != null) {
                mergedRecords.addAll(page.getRecords());
                total += page.getTotal(); // 累加总记录数
            }
        }

        // 2. 创建新的 IPage 对象（假设所有分页的 pageSize 相同）
        IPage<T> firstPage = pages.get(0);
        com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> mergedPage =
                new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(
                        firstPage.getCurrent(),  // 当前页（取第一个分页的当前页）
                        firstPage.getSize(),     // 每页大小（取第一个分页的 pageSize）
                        total                      // 总记录数
                );
        mergedPage.setRecords(mergedRecords);

        return mergedPage;
    }
}
